package cn.fl.dk.web.service;

import cn.fl.dk.web.vo.CalculateResult;
import cn.fl.dk.web.vo.QuestionVO;
import cn.fl.dk.web.vo.TemplateVO;
import cn.fl.system.vo.SysScoreDtlRecVO;
import cn.fl.system.vo.SysScoreRecVO;

import java.util.List;

/**
 * 问题模板服务
 * 作者:hongyanbo
 * 时间:2018/6/4
 */
public interface ITemplateService {
    /**
     * 获取模板
     * @param templateId templateId
     * @param questneId questneId
     * @return
     */
    public TemplateVO getTemplate(String templateId,String questneId);

    /**
     * 获取问题选项列表
     * @param templateCd 模板编号
     * @return
     */
    List<QuestionVO> getQuestion(String templateCd);

    /**
     * 保存评分记录
     * @param templateId 模板id
     * @param templateName 模板名称
     * @param pkId 业务主键
     * @param tableName 表名
     * @param result 总分
     */
    Long saveRec(String templateId, String templateName, String pkId, String tableName, Long result);

    /**
     * 保存评分记录明细
     * @param recId 评分记录id
     * @param selection json key:问题id value: 选项id
     */
    void saveRecDtl(Long recId, String selection);

    /**
     * 根据业务主键查询 评分记录，只返回第一条记录
     * @param id 业务主键
     * @return
     */
    SysScoreRecVO selectRecByPkId(Long id);

    /**
     * 将答案装配进qList
     * @param qList
     * @param id 业务主键
     */
    void assembleAnswer(List<QuestionVO> qList, String id);

    /**
     * 根据评分记录id  模板指标id 查询评分记录明细（答题结果）
     * @param recId 评分记录id
     * @param id 模板指标id
     * @return
     */
    SysScoreDtlRecVO selectDtlRec(Long recId, Long id);

    /**
     * 更新评分记录
     * @param templateId
     * @param templateName
     * @param pkId
     * @param tableName
     * @param result
     * @return
     */
    Long updateRec(String templateId, String templateName, String pkId, String tableName, Long result);

    /**
     * 更新评分记录明细
     * @param recId
     * @param selection
     */
    void updateRecDtl(Long recId, String selection);

    /**
     * 计算分数
     * @param selection
     * @param qtnType
     * @return
     */
    CalculateResult calculateScore(String selection, Integer qtnType);

    /**
     * 获取当前有效模板ID
     * @param s 0代表未出险模板 1代表已出险模板
     * @return
     */
    Long getValidTemplateId(String s);

    /**
     * 删除评分记录明细
     * @param recId
     * @param deleteSelection
     */
    void deleteRecDtl(Long recId, String deleteSelection);
}
